package com.mask.im.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mask.im.business.common.model.RestResponse;
import com.mask.im.business.model.dto.*;
import com.mask.im.business.model.entity.chat.IMGroupChatDO;
import com.mask.im.business.model.vo.*;
import com.mask.im.business.common.model.PageResult;

import java.util.List;
import java.util.concurrent.ExecutionException;


/**
 * 群组管理
 *
 * @author jian
 */
public interface IMGroupChatService extends IService<IMGroupChatDO> {

    void createGroupChat(GroupChatVO groupChatVO);

    List<FriendshipsDTO> getGroupChat(Long userId);

    PageResult<GroupMembersDTO> getGroupMembers(Integer chatGroupId) throws ExecutionException, InterruptedException;

    RestResponse<Boolean> isGroupLeader(Integer groupChatId);

    RestResponse<String> disbandGroupChat(Integer groupChatId);

    RestResponse<Boolean> getGroupChatStatus(Integer groupChatId);

    RestResponse<String> pullGroupChat(PullChatVO pullChatVO);

    RestResponse<GroupChatDTO> groupChatMessage(Integer chatGroupId);


    RestResponse<String> updateGroupChatMessage(GroupChatDTO groupChatMessageDTO);

    PageResult<GroupChatAdminDTO> groupChatList(ConditionVO conditionVO);

    RestResponse<String> operateStatus(Long id, Integer status);

    /**
     * 获取群聊列表
     * @return
     */
    RestResponse<List<IMGroupChatVO>> getGroupList();



}

